using System;
using System.Data;
using MySql.Data.MySqlClient;
using System.Collections;
using System.Collections.Specialized;
using System.Collections.Generic;
using Novapangeia.Dominio;

namespace Novapangeia.Repositorio
{	
	public partial class RepositorioRodada
	{	   
		
		private ISqlHelper sqlHelper;
		
		public  RepositorioRodada(ISqlHelper _sqlHelper)
        {
            if (_sqlHelper == null)
                sqlHelper = new SqlHelper();
            else
                sqlHelper = _sqlHelper;
        }
		
		#region Parameters
		public static class Parameters
		{
			public static MySqlParameter IdRodada
			{
				get
				{
					return new MySqlParameter("p_IdRodada", MySqlDbType.Int32, 0);
				}
			}
			
			public static MySqlParameter Data_rodada
			{
				get
				{
					return new MySqlParameter("p_Data_rodada", MySqlDbType.DateTime, 0);
				}
			}
			
		}
		#endregion		
		
		//=================================================================
		//  Carrega todos os registros do banco de dados
		//=================================================================
		public List<Rodada> LoadAll() 
		{
			string sql = @"SELECT idRodada, data_rodada FROM rodada";
					
			List<Rodada> entityList = new List<Rodada>();
			
			MySqlDataReader reader = sqlHelper.ExecuteReader(CommandType.Text, sql);
			
			Rodada entity;
			
			while (reader.Read())
            {
                entity = FillEntity(reader);
				entityList.Add(entity);
            }

            reader.Close();
			
			return entityList;
		}
	
		//=================================================================
		//  Carrega apenas um registro, buscado pela chave primária
		//=================================================================
		public Rodada LoadByPrimaryKey(uint IdRodada)
		{
            string sql = @"SELECT idRodada, data_rodada FROM rodada WHERE idRodada = @p_idRodada";

			MySqlParameter p;
			p = Parameters.IdRodada;
			p.Value = IdRodada;
		
			MySqlDataReader reader = sqlHelper.ExecuteReader(CommandType.Text, sql, new MySqlParameter[] { p } , CommandBehavior.SingleRow);
			
			Rodada entity = new Rodada();
			
			if(reader.HasRows)
            {
				reader.Read();
				entity = FillEntity(reader);
            }
            else
            {
                entity = null;
            }

            reader.Close();
			
			return entity;
		}
		
        private Rodada FillEntity(MySqlDataReader  reader)
        {
            Rodada newEntity = new Rodada();

            newEntity.IdRodada = reader.GetInt32("IdRodada");

			newEntity.Data_rodada = reader.GetDateTime("Data_rodada");


            return newEntity;
        }
	
		public void Insert(Rodada entity)
		{
            string sql = @"INSERT
	                        INTO rodada
	                        (
		                        data_rodada
	                        )
	                        VALUES
	                        (
		                        @p_data_rodada
	                        )";

			List<MySqlParameter> parameters = new List<MySqlParameter>();
			
			MySqlParameter p;

			p = Parameters.Data_rodada;
			p.Value = entity.Data_rodada;
			parameters.Add(p);


			sqlHelper.ExecuteSql(CommandType.Text, sql, parameters.ToArray());
		}
	
		public bool Update(Rodada entity)
		{
            string sql = @"UPDATE rodada
	                        SET
		                        data_rodada = p_data_rodada
	                        WHERE
		                        idRodada = @p_idRodada";

			List<MySqlParameter> parameters = new List<MySqlParameter>();
			
			MySqlParameter p;
			
			p = Parameters.IdRodada;
			p.Value = entity.IdRodada;
			parameters.Add(p);

			p = Parameters.Data_rodada;
			p.Value = entity.Data_rodada;
			parameters.Add(p);


			return sqlHelper.ExecuteSql(CommandType.Text, sql, parameters.ToArray());	
		}
	
		public bool Delete(Rodada entity)
		{
            string sql = @"	DELETE
	                        FROM rodada
	                        WHERE
		                        idRodada = @p_idRodada";

			MySqlParameter p;
			p = Parameters.IdRodada;
			p.Value = entity.IdRodada;
  
			return sqlHelper.ExecuteSql(CommandType.Text, sql, new MySqlParameter[] { p });	
		}
		
	}
}
